#include<iostream>
using namespace std;
#include<unistd.h>
#include<pthread.h>
#include<cassert>

//进程中的所有函数都是线程共享的
int func(){
    return 10;
}


//新线程
void* threadhandler(void* args){
    const char* name = (const char*)args;
    while(true){
        
        cout<<"我是新线程，正在运行"<<" : 最后一个参数的传参："<<name<<":"<<func()<<endl;
        sleep(1);
    }
}

int main(){
    pthread_t tid;
    //第一个参数是输出型参数，第3个参数是函数指针,也就是新线程的上下文
    int n = pthread_create(&tid,nullptr,threadhandler,(void*)"线程1");
    assert(n == 0);
    (void)n;

    char buffer[1024];

    //主线程
    while(true){
        func();
        snprintf(buffer,sizeof buffer,"0x%x",(unsigned int)tid);
        cout<<"我是主线程，正在运行"<<"tid : "<<buffer<<":"<<func()<<endl;
        sleep(1);
    }


    return 0;
}